#include <iostream>
#include <string>
using namespace std;

class A
{
public:
     A()  {cout << "A" << endl;}
     ~A()  {cout << "~A" << endl;}
    
}






/*
6.基类，子类。 子类中有一个虚表指针，指向虚表，虚表中有和基类中相同的成员函数，会覆盖掉基类的。 ------- 有一个基类指针指向子类的地址。看实际内存地址。
多态的本质是覆盖而非重载。

7. 要么内存，要么类型。有多态的时候看内存，fun函数是否形成多态。 只相当于一个拷贝构造，内存还是p1.
语句2:引用。别名，还是obj是子类
语句3:双冒号，作用域运算符，说明function从属于Bclass,p2只是形式。强制指定，先看后半部分。这里不看内存，看类型。
基类的引用引用了子类Bclass &p2=obj;
基类的指针指向了子类Bclass *p3=&obj;

8.没有多态看类型，p1还是Base类型
多态！

9.指针类型的表述，快速筛选信息。
实参到型参实现了拷贝构造。还是A的。
如果用& 引用的话，就是各是各的，不全是A


10.一个带型参默认值，一个没有型参默认值，调用时候没有传参。
基类指针指向的子类对象
<< 左移运算符
基类的型参默认值给到了子类，但是函数还是子类的函数



